Skip to content

Anti-gaming hardening (un-gameable plan) — tracking PR - #91

Merged
bitzic merged 9 commits into
RalphLabsAI:mainfrom
karpabot:feat/anti-gaming-hardening
Jul 3, 2026
Merged

Anti-gaming hardening (un-gameable plan) — tracking PR#91
bitzic merged 9 commits into
RalphLabsAI:mainfrom
karpabot:feat/anti-gaming-hardening

Conversation

@karpabot

@karpabot karpabot commented Jul 1, 2026

Copy link
Copy Markdown

Public, incremental hardening of netuid-40 toward EV(cheat)<EV(honest), from the researched plan. Un-gameable is impossible (CC attests load-time not execution; PoL is spoofable; membership-inference cant hit low FPR) — this makes cheating detected + economically deterred, and closes live holes.

Landing here incrementally (watch this space):

  • blind-forgeability DETECTOR for the benchmark (this commit)
  • neutralize benchmark_gain in the crown until host-reduced benchmark enforced (kills the live 0.785 forge-the-crown)
  • regenerate content-whitened active_benchmark.json + startup self-test
  • wire run_pending_audits() into the service loop + DoS intake caps + MRTD allowlist
  • (already live via op1/op2: Hopper-only GPU bind + H100-hour budget cap (fair 1x-H100 contest) #90) model-size cap, Hopper bind, H100h budget, gate-4 fix

Marketing note: this is an attested lineage substrate + economic deterrence, not proof-of-training.

karpabot and others added 9 commits July 1, 2026 16:40
- benchmark_blind_forgeable(): flags a non-content-whitened active_benchmark.json
  where a blind score=+-token_id sweep beats chance+3sigma (the deployed 0.785 vs
  0.2 break — targets are systematically small-id vs uniform distractors, so a
  model that learned nothing wins the benchmark leg). make_placeholder_examples is
  already content-whitened; the DEPLOYED file predates it and must be regenerated.
- first commit of the anti-gaming hardening series (un-gameable plan). Next:
  neutralize benchmark_gain in the crown until the host-reduced benchmark is
  enforced, then regenerate the deployed file + startup self-test.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- download_one returns status ('ok'/'decrypt_failed'/'unavailable'), not bool
- decrypt-failed (wrong/rotated seal key) is permanent -> stamp done so it
  stops re-downloading + re-failing the same bundle every epoch (was 512
  repeated decrypt errors / ~184 retries per dead bundle)
- close the miner's HF PR with the current validator pubkey so they re-seal
- transient (network / mid-upload) stays un-stamped -> retries next epoch
- PR-close is best-effort; a perms/network failure never blocks dedup
- tests: dedup routing + close message carries pubkey + error-swallow + noop

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- SIGALRM wall-clock cap (_HF_FETCH_TIMEOUT_S, default 300s) around
  list_repo_files + hf_hub_download; huggingface_hub has no total timeout,
  so a stalled mid-stream fetch froze the whole epoch loop ~35min
- timed-out fetch returns 'stalled' (transient) instead of hanging
- poll_hub retries a stall, then marks it done after _MAX_STALLS (3) so one
  unfetchable/slow bundle can't re-stall the loop every epoch
- closes a DoS vector: a miner could upload a deliberately-slow bundle
- tests: timeout fires + fast passthrough (+ alarm restored) + stall counter

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…LabsAI#91 gaps)

- extract _benchmark_selftest: now REFUSES startup (SystemExit) when
  active_benchmark.json is blind-forgeable AND RALPH_BENCHMARK_CROWN=1
  (was warn-only); default crown-off path still just warns
- extract _run_idle_audit: same RALPH_AUDIT_LOOP_OFF gate + run_pending_audits
  call, now a unit-testable helper instead of inline in main()
- tests: refuse-on-crown+forgeable, warn-when-crown-off, missing-file noop;
  audit gate on/off + error-swallow

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@bitzic
bitzic merged commit 786de62 into RalphLabsAI:main Jul 3, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants